/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package interfaz;

import java.util.ArrayList;
import mundo.GestorMapas;


/**
 *
 * @author Yanire
 */
public class HiloPadre extends Thread  {

    private ArrayList<HiloEnemigo> arrEnemigo;
    private boolean ready = true;
    private LaVentana ventana;
    private String nombre;
    private boolean murio = false;

    public HiloPadre(LaVentana ventana, String nombre) {
        this.ventana = ventana;
        this.nombre = nombre;
        this.arrEnemigo = new ArrayList<HiloEnemigo>();
    }

    public void run() {
        while (true) {
            if (!murio) {
                while (ready) {
                    GestorMapas gestor = ventana.getJuego().getGestor();
                    int turno = 0;
                    switch(gestor.getTurnoJugador()){
                        case 0: turno = 1; break;
                        case 1: turno = 0; break;
                    }
                    
                    if (gestor.getBandos()[turno].getPersonajes().size()>0){
                        for(int j=0; j<gestor.getBandos()[turno].getPersonajes().size(); j++){
                            if(!gestor.getBandos()[turno].getPersonajes().get(j).isTieneHilo()){
                                HiloEnemigo hilo1 = new HiloEnemigo(gestor.getBandos()[turno].getPersonajes().get(j), ventana, "Hilo Hijo" + j);
                                arrEnemigo.add(hilo1);
                                hilo1.start();
                            }
                        }
                    }
                    int cant =0;
                    for (int i = 0; i < arrEnemigo.size(); i++) {

                        if(!arrEnemigo.get(i).isInterrupted())

                            if (arrEnemigo.get(i).getPersonaje().getVidaActual()<=0) {
                                cant++;
                                arrEnemigo.get(i).setMurio(true);
                                arrEnemigo.get(i).interrupt();
                                arrEnemigo.remove(i);
                            }

                     }
                     if (cant == arrEnemigo.size()){
                         return;
                     }

                    ventana.repaint();
                    //System.out.println("Entro a hilo");
                    try {
                        //sleep((int) (Math.random() * 3000));
                        sleep(3000);
                    } catch (InterruptedException e) {
                        for (int i = 0; i < arrEnemigo.size(); i++) {

                            arrEnemigo.get(i).setMurio(true);
                            arrEnemigo.get(i).interrupt();
                        }
                        ready = false;
                        break;

                    }
                    }
                }
            //del murio
            else {
                return;
            }
        }
    }

    public boolean isReady() {
        return ready;
    }

    public void setReady(boolean ready) {
        this.ready = ready;
    }

    public void setMurio(boolean murio) {
        this.murio = murio;
    }

    public String getNombre() {
        return this.nombre;
    }

}
